Skip to content

[donotMerge] test Add HAProxy Ingress controller configuration#1383

Closed
sandeepbh5 wants to merge 18 commits intomainfrom
tmp-ingress2haprxy
Closed

[donotMerge] test Add HAProxy Ingress controller configuration#1383
sandeepbh5 wants to merge 18 commits intomainfrom
tmp-ingress2haprxy

Conversation

@sandeepbh5
Copy link
Contributor

Description

  • Add ingress-haproxy Application template with haproxytech/haproxy 1.27.0
  • Add base HAProxy configuration with URL rewriting and rate limiting
  • Add environment-specific overrides template
  • Disable ingress-nginx in enable-platform and enable-platform-vpro profiles
  • Update nginx-ingress-pxe-boots template condition for new controller

Path rewriting: Maintained via http-request set-path
Rate limiting: Improved from 1 req/sec (nginx) to ~100 req/sec (haproxy) globally

Fixes # (issue)

Any Newly Introduced Dependencies

HAProxy

How Has This Been Tested?

Coder

Checklist:

  • I agree to use the APACHE-2.0 license for my code changes
  • I have not introduced any 3rd party dependency changes
  • I have performed a self-review of my code

- Add ingress-haproxy Application template with haproxytech/haproxy 1.27.0
- Add base HAProxy configuration with URL rewriting and rate limiting
- Add environment-specific overrides template
- Disable ingress-nginx in enable-platform and enable-platform-vpro profiles
- Update nginx-ingress-pxe-boots template condition for new controller

Path rewriting: Maintained via http-request set-path
Rate limiting: Improved from 1 req/sec (nginx) to ~100 req/sec (haproxy) globally

Related to ITEP-84333
sandeepbh5 and others added 11 commits January 29, 2026 20:39
- Point deployRepoRevision from 'main' to 'tmp-ingress2haprxy'
- Allows testing of ingress-haproxy migration before merging to main
- Will revert to 'main' after migration is validated
Signed-off-by: Biswal, Punam <punam.biswal@intel.com>
- Remove unsupported 'tune.ssl.dh-param-file' directive (HAProxy 3.2.9 doesn't support it)
- Fix HTTP 429 error page content-length (24 bytes, not 28)
- Fix rate limiting syntax: change 'http-request reject' to 'http-request deny status'
- Add HTTP binding (port 80) in addition to HTTPS (port 443)
- Add security context to satisfy Kyverno restricted policy
- Set runAsNonRoot: false (HAProxy needs to bind to ports 80/443)
- Add NET_BIND_SERVICE capability

These changes fix CrashLoopBackOff errors in HAProxy pod
- Add 'optional' keyword to HTTPS binding to allow startup without cert
- Fix HTTP 429 error page content-length to 18 bytes (actual payload size)
- This allows HAProxy to start on HTTP while certificate is configured separately
Key changes:
- Add document start marker (---)
- Remove HTTPS binding (no certificate available on startup)
- Add tinkerbell service backend: tinkerbell.orch-infra.svc.cluster.local:8080
- Simplify 429 error page (remove Cache-Control and Connection headers)
- Fix content-length for 429 error page to 18 bytes
- Change health probes from tcpSocket:443 to httpGet:/ on port 80
- Fix YAML structure (probes outside securityContext)

This configuration allows HAProxy to:
1. Start without TLS certificate errors
2. Route traffic to tinkerbell service in orch-infra namespace
3. Perform health checks on HTTP port 80
4. Strip /tink-stack prefix and forward to backend
5. Apply rate limiting (1000 req/10s, 100 connections/10s per IP)
…s-pxe-boots

This resolves the circular dependency where nginx-ingress-pxe-boots was
creating an ingress with tinkerbell backend before the service existed.

New deployment order:
- Wave 1100: ingress-haproxy (HAProxy controller)
- Wave 1150: infra-onboarding (deploys tinkerbell service)
- Wave 1200: nginx-ingress-pxe-boots (ingress with existing backend)

Fixes: nginx-ingress-pxe-boots stuck in Progressing state
Move nginx-ingress-pxe-boots from wave 1200 → 1100 so it creates tls-boots
secret BEFORE infra-onboarding (wave 1150) needs boots-ca-cert.

Wave ordering:
- 1100: nginx-ingress-pxe-boots creates tls-boots Certificate resource
- 1140: copy-ca-cert-boots-to-infra copies tls-boots → boots-ca-cert (ExternalSecret)
- 1150: infra-onboarding deploys with boots-ca-cert available for dkam

This fixes dkam CrashLoopBackOff due to missing /etc/ssl/boots-ca-cert/ca.crt
punam20 and others added 6 commits January 30, 2026 12:11
fix the typo in targetRevision
added commonName: tinkerbell-nginx.{{ .Values.argo.clusterDomain }}
…s-ca-cert before dkam starts at wave 1150

Wave ordering:
- 1100: nginx-ingress-pxe-boots creates tls-boots cert
- 1120: copy-ca-cert-boots-to-infra copies tls-boots → boots-ca-cert (ExternalSecret)
- 1150: infra-onboarding deploys with dkam having cert available

This ensures dkam doesn't crash due to missing /etc/ssl/boots-ca-cert/ca.crt
@sandeepbh5 sandeepbh5 closed this Jan 30, 2026
@sandeepbh5 sandeepbh5 deleted the tmp-ingress2haprxy branch January 30, 2026 14:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

Comments